-- next_floor
-- create by cheny3
-- 下楼

return {
    -- 判断
    canTrigger = function(args)
        -- 一段时间内不能下楼
        local forbidNext = AutoFightM.getForbidNext();
        if forbidNext and forbidNext > os.time() then
            return false;
        end
        return true;
    end,

    -- 触发
    trigger = function(args)
        -- 如果是在副本中
        if DungeonInstanceM.isInInstance() then
            if DungeonInstanceM.isConfirmToLeave() then
                -- 尝试领奖
                local grid = DungeonInstanceM.getTargetGrid();
                if not grid then
                    -- 直接离开
                    DungeonActionM.go("leave_instance");
                else
                    DungeonActionM.go("take_instance_bonus", grid:getPos());
                end
            else
                -- 直接离开副本
                DungeonActionM.go("leave_instance");
            end
        elseif UnrealDungeonM.isInUnreal() then
            -- 神龙夹层中，直接离开
            DungeonActionM.go("leave_unreal");
        else
            -- 先把当前层的数据记录下来
            TestFightM.saveDungeonLog();

            -- 判断一下是不是测试战斗到达最大层数了
            local info = TestFightM.getTestInfo();
            local layer = DungeonM.currentLayer();
            if info and type(info["max_floor"]) == "number"
                and layer >= info["max_floor"] then
                -- 离开迷宫
                AutoFightM.stop();
                -- 记录
                TestFightM.logDungeonInfo("combatStat:\n" .. tableToString(CombatStatM.getStatInfo()));
                TestFightM.logDungeonInfo("testLog:\n" .. tableToString(TestFightM.getSpecialLog()));
                -- 离开
                EventMgr.fire(event.AUTO_FIGHT_LEAVE, {});
            else
                -- 直接进入下一层
                DungeonActionM.go("next_floor");
            end
        end
        return true;
    end,
};
